/*
微信支付
  那些人 那些账号 可以实现微信支付
    企业账号
    企业账号的小程序后台中 必须 给开发者 添加上白名单
      一个 appid 可以同时绑定多个开发者
      这些开发者可以共用这个 appid 和 它的开发权限
*/


import {getSetting,chooseAddress,openSetting,showModel,showToast,requestPayment} from "../../utils/asyncWx.js"
import { request } from "../../request/index"
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {},
    cart: [],
    totalPrice: 0,
    totalNum: 0
  },
  onShow() {
    // 获取缓存中的收货地址信息
    const address = wx.getStorageSync('address');
    // 获取缓存中的购物车数据
    let cart = wx.getStorageSync('cart')||[];
    // 过滤后的购物车数组
    cart = cart.filter(v=>v.checked);

    // 总价格 总数量
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v=>{
      totalPrice+=v.num*v.goods_price;
      totalNum+=v.num;
    })
    // 给data赋值
    this.setData({
      cart,
      totalPrice,
      totalNum,
      address
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  // 点击 支付
  async handleOrderPay() {
    try {
      // 判断缓存中有无token
      const token = wx.getStorageSync('token');
      // 判断
      if(!token) {
        wx.navigateTo({
          url: '/pages/auth/index',
        })
        return;
      }
      // 创建订单
      // 准备 请求头参数
      // const header = {Authorization:token};
      // 准备 请求体参数
      const order_price = this.data.totalPrice;
      const consignee_addr = this.data.address.all;
      const cart = this.data.cart;
      let goods=[];
      cart.forEach(v=>goods.push({
        goods_id:v.goods_id,
        goods_number:v.num,
        goods_price:v.goods_price
      }))
      const orderParams = {order_price,consignee_addr,goods};
      // 准备发送请求 创建订单 获取订单编号
      const {order_number} = await request({url:"/my/orders/create", method:"POST", data:orderParams});
      // 发起 预支付接口
      const {pay} = await request({url:"/myorders/req_unifiedorder", method:"POST", data:{order_number}});
      // 发起微信支付
      await requestPayment(pay);
      // 查询后台 订单状态
      const res = await request({url:"/my/orders/chkOrder", method:"POST", data:{order_number}});
      
      // 支付成功 跳转到订单页面
      await showToast({title:"支付成功"});
      wx.navigateTo({
        url: '/pages/order/index',
      });

      // 删除缓存中 已经支付了的商品
      let newCart = wx.getStorageSync('cart');
      newCart = newCart.filter(v=>!v.checked);
      wx.setStorageSync('cart', newCart);


    } catch (error) {
      await showToast({title:"支付失败"});
      console.log(error);
    }
  }

})